<style include="action-link cr-hidden-style cr-icons">
  :host {
    --controlled-by-active-color: #333;
    --controlled-by-active-link-color: var(--google-blue-600);
    --controlled-by-inactive-color: #5a5a5a;
    display: flex;
    flex-direction: column;
    outline: none;
  }

  @media (prefers-color-scheme: dark) {
    :host {
      --controlled-by-active-color: inherit;
      --controlled-by-active-link-color: var(--cr-link-color);
      --controlled-by-inactive-color: inherit;
    }
  }

  cr-button {
    font-weight: 500;
    margin: 0;
    min-width: auto;
  }

  #date {
    font-size: 0.875rem;
    font-weight: 400;
    letter-spacing: .25px;
    margin: 21px auto 6px;
    padding-bottom: 4px;
    padding-top: 8px;
    width: var(--downloads-card-width);
  }

  #date:empty {
    display: none;
  }

  #content {
    border-radius: var(--cr-card-border-radius);
    display: flex;
    flex: none;
    margin: 6px auto;
    min-height: 103px;
    width: var(--downloads-card-width);
  }

  #content.is-active {
    box-shadow: var(--cr-card-shadow);
  }

  @media (prefers-color-scheme: light) {
    #content.is-active {
      background-color: var(--cr-card-background-color);
    }
  }

  #content:not(.is-active) {
    background: rgba(255, 255, 255, .6);
    border: 1px var(--google-grey-300) solid;
  }

  @media (prefers-color-scheme: dark) {
    #content:not(.is-active) {
      background: none;  /* override */
      border-color: var(--google-grey-800);
    }
  }

  #details {
    border-inline-start: 1px #d8d8d8 solid;
    display: flex;
    flex: 1;
    flex-direction: column;
    min-width: 0;  /* This allows #url to ellide correctly. */
    padding-bottom: 12px;
    padding-inline-end: 16px;
    padding-inline-start: var(--downloads-card-margin);
    padding-top: 16px;
  }

  @media (prefers-color-scheme: dark) {
    #details {
      border-color: rgba(var(--google-grey-800-rgb), .8);
    }
  }

  #content:not(.is-active) #details {
    color: rgba(27, 27, 27, .6);
  }

  @media (prefers-color-scheme: dark) {
    #content:not(.is-active) #details {
      color: rgba(var(--google-grey-500-rgb), .6);
    }
  }

  #content:not(.is-active) #name {
    text-decoration: line-through;
  }

  @media (prefers-color-scheme: dark) {
    #content:not(.is-active) :-webkit-any(#name, #tag) {
      color: var(--google-grey-500);
    }
  }

  .icon-wrapper {
    align-self: center;
    flex: none;
    justify-content: center;
    margin: 0 24px;
  }

  .icon,
  #file-icon-wrapper {
    height: 32px;
    width: 32px;
  }

  #file-icon-wrapper {
    overflow: hidden;  /* Reduces file icon flicker on initial load. */
  }

  #content:-webkit-any(.show-progress, .dangerous) #file-icon-wrapper {
    /* TODO(dbeam): animate from top-aligned to centered when items finish?
     */
    align-self: flex-start;
    padding-top: 16px;
  }

  #content:not(.is-active) .icon {
    -webkit-filter: grayscale(100%);
    opacity: .5;
  }

  #file-icon-wrapper iron-icon[icon-color='paper-grey'] {
    color: var(--paper-grey-400);
  }

  #file-icon-wrapper iron-icon[icon-color='red'] {
    color: var(--google-red-700);
  }

  #file-icon-wrapper iron-icon[icon-color='yellow'] {
    color: var(--google-yellow-500);
  }

  @media (prefers-color-scheme: dark) {
    #file-icon-wrapper iron-icon[icon-color='red'] {
      color: var(--google-red-300);
    }
  }

  #file-icon-wrapper iron-icon[icon-color='grey'] {
    color: var(--google-grey-700);
  }

  @media (prefers-color-scheme: dark) {
    #file-icon-wrapper iron-icon[icon-color='grey'] {
      color: var(--google-grey-500);
    }
  }

  #name,
  #file-link,
  #url {
    max-width: 100%;
  }

  #name,
  #file-link {
    font-weight: 500;
    word-break: break-all;
  }

  @media (prefers-color-scheme: light) {
    .is-active :-webkit-any(#name, #file-link, #show) {
      color: var(--google-blue-600);
    }
  }

  #name {
    margin-inline-end: 12px;  /* Only really affects #tag. */
  }

  #tag {
    color: #5a5a5a;
    font-weight: 500;
  }

  #url {
    color: inherit;
    display: block;
    margin-top: 6px;
    min-height: 0;
    overflow: hidden;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .is-active #url {
    color: var(--cr-secondary-text-color);
  }

  #progress,
  #description:not(:empty),
  .controls {
    margin-top: 16px;
  }

  @media (prefers-color-scheme: light) {
    .is-active #description {
      color: #616161;
    }
  }

  #progress {
    /* TODO(dbeam): border-radius on container and progress bar. */
    --paper-progress-active-color: var(--google-blue-600);
    --paper-progress-container-color: rgb(223, 222, 223);
    width: auto;
  }

  @media (prefers-color-scheme: dark) {
    #progress {
      --paper-progress-active-color: var(--google-blue-300);
      --paper-progress-container-color: var(--google-grey-800);
    }
  }

  #show {
    margin: .7em 0;
  }

  #controlled-by,
  #controlled-by a {
    color: var(--controlled-by-inactive-color);
  }

  .is-active #controlled-by {
    color: var(--controlled-by-active-color);
    margin-inline-start: 8px;
  }

  .is-active #controlled-by a {
    color: var(--controlled-by-active-link-color);
  }

  .more-options {
    display: flex;
    flex-direction: column;
  }

  cr-icon-button {
    --cr-icon-button-icon-size: 16px;
    --cr-icon-button-margin-end: 8px;
    margin-top: 8px;
  }

  #incognito {
    -webkit-mask-image: url(images/incognito_marker.svg);
    align-self: flex-end;
    background-color: var(--cr-secondary-text-color);
    height: 16px;
    margin-block-end: 20px;
    margin-block-start: auto;
    margin-inline-end: 16px;
    width: 16px;
  }

  :host-context([dir='rtl']) #incognito {
    left: 16px;
    right: initial;
  }

  #pauseOrResume,
  #dangerous .action-button,
  #incognito-warning .action-button,
  #openNow {
    margin-inline-end: 8px;
  }
</style>

<div id="date" role="heading" aria-level="2">[[computeDate_(data.hideDate,
    data.sinceString,
    data.dateString)]]</div>

<div id="content" on-dragstart="onDragStart_"
    class$="[[computeClass_(isActive_, isDangerous_, showProgress_)]]"
    focus-row-container>
  <!--
    TODO(hcarmona): Investigate displaying danger level as text in alt
    attribute and remove aria-hidden="true" from #file-icon-wrapper
  -->
  <div id="file-icon-wrapper" class="icon-wrapper" aria-hidden="true">
    <img class="icon" id="file-icon" alt="" hidden="[[!useFileIcon_]]"
    icon-color$="[[computeIconColor_(isDangerous_, data.dangerType,
    useFileIcon_)]]">
    <iron-icon class="icon" icon$="[[computeIcon_(
        isDangerous_, data.dangerType, useFileIcon_)]]"
        hidden="[[useFileIcon_]]" icon-color$="[[computeIconColor_(isDangerous_,
        data.dangerType, useFileIcon_)]]"></iron-icon>
  </div>

  <div id="details">
    <div id="title-area" role="gridcell"><!--
      Can't have any line breaks.
      --><a is="action-link" id="file-link" href="[[data.url]]"
          on-click="onFileLinkTap_" focus-row-control
          focus-type="fileLink"
          hidden="[[!completelyOnDisk_]]">[[data.fileName]]</a><!--
      Before #name.
      --><span id="name"
          hidden="[[completelyOnDisk_]]">[[data.fileName]]</span>
      <span id="tag">[[computeTag_(data.state,
                                   data.lastReasonText,
                                   data.fileExternallyRemoved)]]</span>
    </div>

    <div role="gridcell">
      <a id="url" target="_blank" on-click="onUrlTap_" focus-row-control
          focus-type="url">[[chopUrl_(data.url)]]</a>
    </div>

    <div id="description" role="gridcell"
        hidden$="[[!computeDescriptionVisible_(data.*)]]">
      [[computeDescription_(
          data.state,
          data.dangerType,
          data.fileName,
          data.progressStatusText)]]
    </div>

    <template is="dom-if" if="[[showProgress_]]">
      <div role="gridcell">
        <paper-progress id="progress"
            indeterminate="[[isIndeterminate_(data.percent)]]"
            value="[[data.percent]]"></paper-progress>
      </div>
    </template>

    <div id="safe" class="controls" hidden="[[!isDownloadItemSafe_]]">
      <span role="gridcell" hidden="[[!hasShowInFolderLink_]]">
        <a is="action-link" id="show" on-click="onShowTap_"
            focus-row-control
            focus-type="show">[[data.showInFolderText]]</a>
      </span>
      <template is="dom-if" if="[[data.retry]]">
        <span role="gridcell">
          <cr-button class="action-button" on-click="onRetryTap_"
              focus-row-control focus-type="retry">
            $i18n{controlRetry}
          </cr-button>
        </span>
      </template>
      <template is="dom-if" if="[[pauseOrResumeText_]]">
        <span role="gridcell">
          <cr-button on-click="onPauseOrResumeTap_" id="pauseOrResume"
              focus-row-control focus-type="pauseOrResume">
            [[pauseOrResumeText_]]
          </cr-button>
        </span>
      </template>
      <template is="dom-if" if="[[showOpenNow_]]" restamp>
        <span role="gridcell">
          <cr-button on-click="onOpenNowTap_" id="openNow" class="action-button"
                     focus-row-control focus-type="open">
            $i18n{controlOpenNow}
          </cr-button>
        </span>
      </template>
      <template is="dom-if" if="[[showCancel_]]">
        <span role="gridcell">
          <cr-button on-click="onCancelTap_" focus-row-control
              focus-type="cancel">
            $i18n{controlCancel}
          </cr-button>
        </span>
      </template>
      <span id="controlled-by"><!-- Text populated dynamically. --></span>
    </div>

    <template is="dom-if" if="[[isDangerous_]]">
      <div id="dangerous" class="controls">
        <!-- Dangerous file types (e.g. .exe, .jar). -->
        <template is="dom-if" if="[[!isMalware_]]">
          <span role="gridcell">
            <cr-button on-click="onDiscardDangerousTap_"
                class="action-button" focus-row-control
                focus-type="discard">$i18n{dangerDiscard}</cr-button>
          </span>
          <span role="gridcell">
            <cr-button on-click="onSaveDangerousTap_" focus-row-control
                focus-type="save">
              $i18n{dangerSave}</cr-button>
          </span>
        </template>

        <!-- Things that safe browsing has determined to be dangerous. -->
        <template is="dom-if" if="[[isMalware_]]">
          <span role="gridcell">
            <cr-button on-click="onDiscardDangerousTap_"
                class="action-button"
                focus-row-control focus-type="discard">
              $i18n{controlRemoveFromList}</cr-button>
          </span>
          <span role="gridcell">
            <cr-button on-click="onSaveDangerousTap_" focus-row-control
                focus-type="save">
              $i18n{dangerRestore}</cr-button>
          </span>
        </template>
      </div>
    </template>

    <template is="dom-if" if="[[shouldShowIncognitoWarning_]]">
      <div id="incognito-warning" class="controls">
        <span role="gridcell">
          <cr-button on-click="onIncognitoWarningAccepted_"
              class="action-button" focus-row-control
              focus-type="save">$i18n{downloadAnyway}</cr-button>
        </span>
        <span role="gridcell">
          <cr-button on-click="onCancelTap_" focus-row-control
              focus-type="cancel">
            $i18n{controlCancel}</cr-button>
        </span>
      </div>
    </template>
  </div>
  <div class="more-options">
    <div role="gridcell">
      <cr-icon-button class="icon-clear"
          style$="[[computeRemoveStyle_(isDangerous_, showCancel_)]]"
          id="remove" title="$i18n{controlRemoveFromList}"
          aria-label$="[[controlRemoveFromListAriaLabel_]]"
          on-click="onRemoveTap_" focus-row-control focus-type="remove">
      </cr-icon-button>
    </div>
    <div id="incognito" title="$i18n{inIncognito}" hidden="[[!data.otr]]"></div>
  </div>
</div>
